home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CUCD / Programming / AmigaE / Src / Tools / Arexx / arexx.doc next >
Text File  |  1992-09-02  |  2KB  |  64 lines

  1. arexx.m: simple routines for adding an arexx-port to your program.
  2.  
  3.     port:=rx_OpenPort(portname)
  4.  
  5. Creates an arexx-port. macro programs may now reach you by saying
  6. 'ADDRESS portname'. May raise: "MEM", "SIG", "DOUB". the last two are
  7. 'could not allocate signal' and 'port with same name already exists'.
  8.  
  9.     rx_ClosePort(port)
  10.  
  11. Frees up the port and all associated resources. May safely be called
  12. with NIL.
  13.  
  14.     mes,string:=rx_GetMsg(port)
  15.  
  16. Just about the same as exec's GetMsg, only now rexx-specific.
  17. extracts the string send from the macro program. If mes=NIL then there
  18. was no message.
  19.  
  20.     rx_ReplyMsg(mes,rc=0,resultstring=NIL)
  21.  
  22. reply the message you got from rx_GetMsg(). pass rc=0 for no error,
  23. and a string if you think the command send requires a result. rc>0
  24. signals an error (no result is returned).
  25.  
  26.     rx_HandleAll(interpret_proc,portname)
  27.  
  28. The first four functions supply you with all the machinery needed
  29. for adding an arexxport to your programs. However, if all your
  30. program does is wait for and process messages from arexx anyway,
  31. you can use this function which encapsulates the other four. All
  32. it needs is a PROC to process the messages and again a portname.
  33.  
  34. Alternatively, the source of this function is a usefull example
  35. of how to call the other four functions, just incase you want
  36. to call them yourself:
  37.  
  38.  
  39. PROC rx_HandleAll(interpret_proc,portname) HANDLE
  40.   DEF port=NIL,sig,quit=FALSE,mes,s,rc,rs
  41.   port,sig:=rx_OpenPort(portname)
  42.   REPEAT
  43.     Wait(sig)
  44.     REPEAT
  45.       mes,s:=rx_GetMsg(port)
  46.       IF mes 
  47.         quit,rc,rs:=interpret_proc(s)
  48.         rx_ReplyMsg(mes,rc,rs)
  49.       ENDIF
  50.     UNTIL (mes=NIL) OR (quit=TRUE)
  51.   UNTIL quit
  52.   Raise()
  53. EXCEPT
  54.   rx_ClosePort(port)
  55.   ReThrow()
  56. ENDPROC
  57.  
  58.  
  59. From the code we can see that the proc given as an argument to rx_HandleAll()
  60. gets as argument a string he may want to process, and returns a flag
  61. wether to quit or not, and the rc and result as mentioned in the rx_Reply()
  62. function. see arexxsimple.e how to make an arexxhost with this function
  63. with just a few lines of code.
  64.